package pt.iscte.daam.model;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Table(name = "Mensagem")
@Entity
public class Mensagem implements Serializable {
	/**
	 * serialVersionUID
	 */
	private static final long serialVersionUID = 4253203943625870488L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "IdMensagem")
	private Long id;
	
	@Column(name = "Mensagem")
	private String mensagem;
	
	@Column (name = "DataMensagem")
	private Calendar dataMensagem;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "Arrendatario")
	private Arrendatario arrendatario;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "Senhorio")
	private Senhorio senhorio;
	
	@OneToOne
	@JoinColumn(name = "Quarto")
	private Quarto quarto;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getMensagem() {
		return mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public Calendar getDataMensagem() {
		return dataMensagem;
	}

	public void setDataMensagem(Calendar dataMensagem) {
		this.dataMensagem = dataMensagem;
	}

	public Arrendatario getArrendatario() {
		return arrendatario;
	}

	public void setArrendatario(Arrendatario arrendatario) {
		this.arrendatario = arrendatario;
	}

	public Senhorio getSenhorio() {
		return senhorio;
	}

	public void setSenhorio(Senhorio senhorio) {
		this.senhorio = senhorio;
		if(! senhorio.getMensagens().contains(this)){
			senhorio.getMensagens().add(this);
		}
	}

	public Quarto getQuarto() {
		return quarto;
	}

	public void setQuarto(Quarto quarto) {
		this.quarto = quarto;
	}
	
	
}
